// 7-2 交换最小值和最大值 (15分)
// 本题要求编写程序，先将输入的一系列整数中的最小值与第一个数交换，然后将最大值与最后一个数交换，最后输出交换后的序列。

// 注意：题目保证最大和最小值都是唯一的。

// 输入格式：
// 输入在第一行中给出一个正整数N（≤10），第二行给出N个整数，数字间以空格分隔。

// 输出格式：
// 在一行中顺序输出交换后的序列，每个整数后跟一个空格。
#include <stdio.h>

void Swap(int arr[], int idx1, int idx2);
int main()
{
    int n, arr[10] = {0}, min_idx, max_idx;
    scanf("%d", &n);

    // 数组赋值
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }

    // 找最小值的idx
    min_idx = 0;
    for (int i = 0; i < n; i++)
    {
        if (arr[i] < arr[min_idx])
        {
            min_idx = i;
        }
    }
    Swap(arr, 0, min_idx);  // 交换第一个数和最小值

    // 找交换过一次后的最大值idx
    max_idx = 0;
    for (int i = 0; i < n; i++)
    {
        if (arr[i] > arr[max_idx])
        {
            max_idx = i;
        }
    }
    Swap(arr, n - 1, max_idx); // 交换

    for (int i = 0; i< n; i++)
    {
        printf("%d ", arr[i]);
    }

    return 0;
}

void Swap(int arr[], int idx1, int idx2)
{
    int temp = arr[idx1];
    arr[idx1] = arr[idx2];
    arr[idx2] = temp;
}
// 输入样例：
// 5
// 8 2 5 1 4

// 输出样例：
// 1 2 5 4 8 